package cn.song.model;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * 下载 DTO
 *
 * @author SongRenShuo
 * @date 2024/09/03
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class DownloadDto {

    /**
     * UUID
     */
    private  String uuid;
    /**
     * 账户
     */
    private String zhangHu;
    /**
     * 文件名
     */
    private String fileName;
    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createDate;
    /**
     * 模块(1.订单，2.出库单，3.流水，4.其他)
     */
    private Integer model;
    /**
     * 导出状态(1.队列中，2.导出中，3.导出完成，4.导出异常，5.终止导出)
     */
    private Integer exportStatus;
    /**
     * 导出总条数
     */
    @Builder.Default
    private Number total = 0;
    /**
     * 导出进度(0%-100%)
     */
    @Builder.Default
    private Number progress = 0;
    /**
     * 结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date endDate;
    /**
     * 描述
     */
    private String description;
    /**
     * 下载链接
     */
    private String downloadUrl;
    /**
     * 拓展信息
     */
    @Builder.Default
    private Map<String,Object> extendProps = new HashMap<>();

    /**
     * 添加拓展数据
     *
     * @param key   键
     * @param value 值
     * @return {@link DownloadDto }
     */
    public DownloadDto add(String key, Object value) {
        this.extendProps.put(key, value);
        return this;
    }

}
